home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 August: Technology Seed / August 1998 ADC Seed CD.toast / Mac OS 8.5b2 / allegro-b2-pseudo-SDK / CIncludes / MacTypes.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-07-17  |  20.6 KB  |  693 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        MacTypes.h
  3.  
  4.      Contains:    Basic Macintosh data types.
  5.  
  6.      Version:    Technology:    Mac OS 8.1
  7.                  Release:    Allego Seed, Use with 3.1 Universal Interfaces
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __MACTYPES__
  19. #define __MACTYPES__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24.  
  25.  
  26.  
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_STRUCT_ALIGN
  40.     #pragma options align=mac68k
  41. #elif PRAGMA_STRUCT_PACKPUSH
  42.     #pragma pack(push, 2)
  43. #elif PRAGMA_STRUCT_PACK
  44.     #pragma pack(2)
  45. #endif
  46.  
  47. /********************************************************************************
  48.  
  49.     Special values in C
  50.     
  51.         NULL        The C standard for an impossible pointer value
  52.         nil            A carry over from pascal, NULL is prefered for C
  53.         
  54. *********************************************************************************/
  55. #ifndef NULL
  56.     /* Symantec C compilers (but not C++) want NULL and nil to be (void*)0  */
  57.     #if !defined(__cplusplus) && (defined(__SC__) || defined(THINK_C))
  58.         #define NULL ((void *) 0)
  59.     #else
  60.         #define    NULL 0
  61.     #endif
  62. #endif
  63.  
  64. #ifndef nil
  65.     #define nil NULL
  66. #endif
  67.  
  68.  
  69. /********************************************************************************
  70.  
  71.     Base integer types for all target OS's and CPU's
  72.     
  73.         UInt8             8-bit unsigned integer    
  74.         SInt8             8-bit signed integer
  75.         UInt16            16-bit unsigned integer    
  76.         SInt16            16-bit signed integer            
  77.         UInt32            32-bit unsigned integer    
  78.         SInt32            32-bit signed integer    
  79.         UInt64            64-bit unsigned integer    
  80.         SInt64            64-bit signed integer    
  81.  
  82. *********************************************************************************/
  83. typedef unsigned char                     UInt8;
  84. typedef signed char                     SInt8;
  85. typedef unsigned short                     UInt16;
  86. typedef signed short                     SInt16;
  87. typedef unsigned long                     UInt32;
  88. typedef signed long                     SInt32;
  89. #if TARGET_RT_BIG_ENDIAN
  90.  
  91. struct wide {
  92.     SInt32                             hi;
  93.     UInt32                             lo;
  94. };
  95. typedef struct wide                        wide;
  96.  
  97. struct UnsignedWide {
  98.     UInt32                             hi;
  99.     UInt32                             lo;
  100. };
  101. typedef struct UnsignedWide                UnsignedWide;
  102. #else
  103.  
  104. struct wide {
  105.     UInt32                             lo;
  106.     SInt32                             hi;
  107. };
  108. typedef struct wide                        wide;
  109.  
  110. struct UnsignedWide {
  111.     UInt32                             lo;
  112.     UInt32                             hi;
  113. };
  114. typedef struct UnsignedWide                UnsignedWide;
  115. #endif  /* TARGET_RT_BIG_ENDIAN */
  116.  
  117.  
  118. #if TYPE_LONGLONG
  119. /*
  120.     Note:    wide and UnsignedWide must always be structs for source code
  121.             compatibility. On the other hand UInt64 and SInt64 can be
  122.             either a struct or a long long, depending on the compiler.
  123.             
  124.             If you use UInt64 and SInt64 you should do all operations on 
  125.             those data types through the functions/macros in Math64.h.  
  126.             This will assure that your code compiles with compilers that
  127.             support long long and those that don't.
  128. */
  129. typedef   signed long long                 SInt64;
  130. typedef unsigned long long              UInt64;
  131.  
  132. #else
  133.  
  134.  
  135. typedef wide                             SInt64;
  136. typedef UnsignedWide                     UInt64;
  137. #endif    /* TYPE_LONGLONG */
  138.  
  139. /********************************************************************************
  140.  
  141.     Base fixed point types 
  142.     
  143.         Fixed            16-bit signed integer plus 16-bit fraction
  144.         UnsignedFixed    16-bit unsigned integer plus 16-bit fraction
  145.         Fract            2-bit signed integer plus 30-bit fraction
  146.         ShortFixed        8-bit signed integer plus 8-bit fraction
  147.         
  148. *********************************************************************************/
  149. typedef long                             Fixed;
  150. typedef Fixed *                            FixedPtr;
  151. typedef long                             Fract;
  152. typedef Fract *                            FractPtr;
  153. typedef unsigned long                     UnsignedFixed;
  154. typedef short                             ShortFixed;
  155.  
  156.  
  157. /********************************************************************************
  158.  
  159.     Base floating point types 
  160.     
  161.         Float32            32 bit IEEE float:  1 sign bit, 8 exponent bits, 23 fraction bits
  162.         Float64            64 bit IEEE float:  1 sign bit, 11 exponent bits, 52 fraction bits    
  163.         Float80            80 bit MacOS float: 1 sign bit, 15 exponent bits, 1 integer bit, 63 fraction bits
  164.         Float96            96 bit 68881 float: 1 sign bit, 15 exponent bits, 16 pad bits, 1 integer bit, 63 fraction bits
  165.         
  166.     Note: These are fixed size floating point types, useful when writing a floating
  167.           point value to disk.  If your compiler does not support a particular size 
  168.           float, a struct is used instead.
  169.           Use of of the NCEG types (e.g. double_t) or an ANSI C type (e.g. double) if
  170.           you want a floating point representation that is natural for any given
  171.           compiler, but might be a different size on different compilers.
  172.  
  173. *********************************************************************************/
  174. typedef float                Float32;
  175. #if defined(__MWERKS__) || defined(THINK_C)
  176.     typedef short double    Float64;
  177. #else
  178.     typedef double            Float64;
  179. #endif
  180. #if TARGET_CPU_68K
  181.     #if TARGET_RT_MAC_68881
  182.         typedef long double    Float96;        
  183.         struct Float80 {
  184.             SInt16     exp;
  185.             UInt16     man[4];
  186.         };
  187.         typedef struct Float80 Float80;
  188.     #else
  189.         typedef long double    Float80;        
  190.         struct Float96 {
  191.             SInt16     exp[2];        /* the second 16-bits is always zero */
  192.             UInt16     man[4];
  193.         };
  194.         typedef struct Float96 Float96;
  195.     #endif
  196. #else
  197.     struct Float80 {
  198.         SInt16     exp;
  199.         UInt16     man[4];
  200.     };
  201.     typedef struct Float80 Float80;
  202.     
  203.     struct Float96 {
  204.         SInt16     exp[2];        /* the second 16-bits is always zero */
  205.         UInt16     man[4];
  206.     };
  207.     typedef struct Float96 Float96;
  208. #endif
  209.  
  210.  
  211.  
  212. /********************************************************************************
  213.  
  214.     MacOS Memory Manager types
  215.     
  216.         Ptr                Pointer to a non-relocatable block
  217.         Handle            Pointer to a master pointer to a relocatable block
  218.         Size            The number of bytes in a block (signed for historical reasons)
  219.         
  220. *********************************************************************************/
  221. typedef char *                            Ptr;
  222. typedef Ptr *                            Handle;
  223. typedef long                             Size;
  224.  
  225. /********************************************************************************
  226.  
  227.     Higher level basic types
  228.     
  229.         OSErr                    16-bit result error code
  230.         OSStatus                32-bit result error code
  231.         LogicalAddress            Address in the clients virtual address space
  232.         ConstLogicalAddress        Address in the clients virtual address space that will only be read
  233.         PhysicalAddress            Real address as used on the hardware bus
  234.         BytePtr                    Pointer to an array of bytes
  235.         ByteCount                The size of an array of bytes
  236.         ByteOffset                An offset into an array of bytes
  237.         ItemCount                32-bit iteration count
  238.         OptionBits                Standard 32-bit set of bit flags
  239.         PBVersion                ?
  240.         Duration                32-bit millisecond timer for drivers
  241.         AbsoluteTime            64-bit clock
  242.         ScriptCode                A particular set of written characters (e.g. Roman vs Cyrillic) and their encoding
  243.         LangCode                A particular language (e.g. English), as represented using a particular ScriptCode
  244.         RegionCode                Designates a language as used in a particular region (e.g. British vs American
  245.                                 English) together with other region-dependent characteristics (e.g. date format)
  246.         FourCharCode            A 32-bit value made by packing four 1 byte characters together
  247.         OSType                    A FourCharCode used in the OS and file system (e.g. creator)
  248.         ResType                    A FourCharCode used to tag resources (e.g. 'DLOG')
  249.         
  250. *********************************************************************************/
  251. typedef SInt16                             OSErr;
  252. typedef SInt32                             OSStatus;
  253. typedef void *                            LogicalAddress;
  254. typedef const void *                    ConstLogicalAddress;
  255. typedef void *                            PhysicalAddress;
  256. typedef UInt8 *                            BytePtr;
  257. typedef UInt32                             ByteCount;
  258. typedef UInt32                             ByteOffset;
  259. typedef SInt32                             Duration;
  260. typedef UnsignedWide                     AbsoluteTime;
  261. typedef UInt32                             OptionBits;
  262. typedef UInt32                             ItemCount;
  263. typedef UInt32                             PBVersion;
  264. typedef SInt16                             ScriptCode;
  265. typedef SInt16                             LangCode;
  266. typedef SInt16                             RegionCode;
  267. typedef unsigned long                     FourCharCode;
  268. typedef FourCharCode                     OSType;
  269. typedef FourCharCode                     ResType;
  270. typedef OSType *                        OSTypePtr;
  271. typedef ResType *                        ResTypePtr;
  272.  
  273. /********************************************************************************
  274.  
  275.     Boolean types and values
  276.     
  277.         Boolean            A one byte value, holds "false" (0) or "true" (1)
  278.         false            The Boolean value of zero (0)
  279.         true            The Boolean value of one (1)
  280.         
  281. *********************************************************************************/
  282. /*
  283.     The identifiers "true" and "false" are becoming keywords in C++
  284.     and work with the new built-in type "bool"
  285.     "Boolean" will remain an unsigned char for compatibility with source
  286.     code written before "bool" existed.
  287. */
  288. #if !TYPE_BOOL
  289.  
  290. #if TARGET_OS_WIN32
  291.     /* MS VC normally warns if true or false is defined */
  292.     #pragma warning (disable: 4237)
  293. #endif
  294.  
  295. enum {
  296.     false                        = 0,
  297.     true                        = 1
  298. };
  299.  
  300.  
  301. #if TARGET_OS_WIN32
  302.     #pragma warning (default: 4237)
  303. #endif
  304. #endif  /* !TYPE_BOOL */
  305.  
  306. typedef unsigned char                     Boolean;
  307.  
  308.  
  309. /********************************************************************************
  310.  
  311.     Function Pointer Types
  312.     
  313.         ProcPtr                    Generic pointer to a function
  314.         Register68kProcPtr        Pointer to a 68K function that expects parameters in registers
  315.         UniversalProcPtr        Pointer to classic 68K code or a RoutineDescriptor
  316.         
  317.         ProcHandle                Pointer to a ProcPtr
  318.         UniversalProcHandle        Pointer to a UniversalProcPtr
  319.         
  320. *********************************************************************************/
  321. typedef CALLBACK_API_C( long , ProcPtr )();
  322. typedef CALLBACK_API( void , Register68kProcPtr )();
  323. #if TARGET_OS_MAC && TARGET_RT_MAC_CFM
  324. /*    Note that the RoutineDescriptor structure is defined in the MixedMode.h header */
  325. typedef struct RoutineDescriptor *UniversalProcPtr;
  326. #else
  327. typedef ProcPtr                         UniversalProcPtr;
  328. #endif  /* TARGET_OS_MAC && TARGET_RT_MAC_CFM */
  329.  
  330. typedef ProcPtr *                        ProcHandle;
  331. typedef UniversalProcPtr *                UniversalProcHandle;
  332.  
  333.  
  334. /********************************************************************************
  335.  
  336.     Common Constants
  337.     
  338.         noErr                    OSErr: function performed properly - no error
  339.         kNilOptions                OptionBits: all flags false
  340.         kInvalidID                KernelID: NULL is for pointers as kInvalidID is for ID's
  341.         kVariableLengthArray    array bounds: variable length array
  342.  
  343.     Note: kVariableLengthArray is used in array bounds to specify a variable length array.
  344.           It is ususally used in variable length structs when the last field is an array
  345.           of any size.  Before ANSI C, we used zero as the bounds of variable length 
  346.           array, but zero length array are illegal in ANSI C.  Example usage:
  347.     
  348.         struct FooList 
  349.         {
  350.             short     listLength;
  351.             Foo        elements[kVariableLengthArray];
  352.         };
  353.         
  354. *********************************************************************************/
  355.  
  356. enum {
  357.     noErr                        = 0
  358. };
  359.  
  360.  
  361. enum {
  362.     kNilOptions                    = 0
  363. };
  364.  
  365. #define kInvalidID     0
  366.  
  367. enum {
  368.     kVariableLengthArray        = 1
  369. };
  370.  
  371.  
  372. enum {
  373.     kUnknownType                = 0x3F3F3F3F                    /* '????' QuickTime 3.0: default unknown ResType or OSType */
  374. };
  375.  
  376.  
  377.  
  378. /********************************************************************************
  379.  
  380.     String Types
  381.     
  382.         UniChar                    A single 16-bit Unicode character
  383.         UniCharCount            A count of Unicode characters in an array or buffer
  384.  
  385.         StrNNN                    Pascal string holding up to NNN bytes
  386.         StringPtr                Pointer to a pascal string
  387.         StringHandle            Pointer to a StringPtr
  388.         ConstStrNNNParam        For function parameters only - means string is const
  389.         
  390.         CStringPtr                Pointer to a C string       (same as:  char*)
  391.         ConstCStringPtr            Pointer to a const C string (same as:  const char*)
  392.         
  393.     Note: The length of a pascal string is stored in the first byte.
  394.           A pascal string does not have a termination byte and can be at most 255 bytes long.
  395.           The first character in a pascal string is offset one byte from the start of the string. 
  396.           
  397.           A C string is terminated with a byte of value zero.  
  398.           A C string has no length limitation.
  399.           The first character in a C string is the first byte of the string. 
  400.           
  401.         
  402. *********************************************************************************/
  403. typedef UInt16                             UniChar;
  404. typedef UInt32                             UniCharCount;
  405. typedef unsigned char                     Str255[256];
  406. typedef unsigned char                     Str63[64];
  407. typedef unsigned char                     Str32[33];
  408. typedef unsigned char                     Str31[32];
  409. typedef unsigned char                     Str27[28];
  410. typedef unsigned char                     Str15[16];
  411. /*
  412.     The type Str32 is used in many AppleTalk based data structures.
  413.     It holds up to 32 one byte chars.  The problem is that with the
  414.     length byte it is 33 bytes long.  This can cause weird alignment
  415.     problems in structures.  To fix this the type "Str32Field" has
  416.     been created.  It should only be used to hold 32 chars, but
  417.     it is 34 bytes long so that there are no alignment problems.
  418. */
  419. typedef unsigned char                     Str32Field[34];
  420. /*
  421.     QuickTime 3.0:
  422.     The type StrFileName is used to make MacOS structs work 
  423.     cross-platform.  For example FSSpec or SFReply previously
  424.     contained a Str63 field.  They now contain a StrFileName
  425.     field which is the same when targeting the MacOS but is
  426.     a 256 char buffer for Win32 and unix, allowing them to
  427.     contain long file names.
  428. */
  429. #if TARGET_OS_MAC
  430. typedef Str63                             StrFileName;
  431. #else
  432. typedef Str255                             StrFileName;
  433. #endif  /* TARGET_OS_MAC */
  434.  
  435. typedef unsigned char *                    StringPtr;
  436. typedef StringPtr *                        StringHandle;
  437. typedef const unsigned char *            ConstStr255Param;
  438. typedef const unsigned char *            ConstStr63Param;
  439. typedef const unsigned char *            ConstStr32Param;
  440. typedef const unsigned char *            ConstStr31Param;
  441. typedef const unsigned char *            ConstStr27Param;
  442. typedef const unsigned char *            ConstStr15Param;
  443. #if TARGET_OS_MAC
  444. typedef ConstStr63Param                 ConstStrFileNameParam;
  445. #else
  446. typedef ConstStr255Param                 ConstStrFileNameParam;
  447. #endif  /* TARGET_OS_MAC */
  448.  
  449. #ifdef __cplusplus
  450. inline unsigned char StrLength(ConstStr255Param string) { return (*string); }
  451. #else
  452. #define StrLength(string) (*(unsigned char *)(string))
  453. #endif  /* defined(__cplusplus) */
  454.  
  455. #if OLDROUTINENAMES
  456. #define Length(string) StrLength(string)
  457. #endif  /* OLDROUTINENAMES */
  458.  
  459. /********************************************************************************
  460.  
  461.     Quickdraw Types
  462.     
  463.         Point                2D Quickdraw coordinate, range: -32K to +32K
  464.         Rect                Rectangluar Quickdraw area
  465.         Style                Quickdraw font rendering styles
  466.         StyleParameter        Style when used as a parameter (historical 68K convention)
  467.         StyleField            Style when used as a field (historical 68K convention)
  468.         CharParameter        Char when used as a parameter (historical 68K convention)
  469.         
  470.     Note:   The original Macintosh toolbox in 68K Pascal defined Style as a SET.  
  471.             Both Style and CHAR occupy 8-bits in packed records or 16-bits when 
  472.             used as fields in non-packed records or as parameters. 
  473.         
  474. *********************************************************************************/
  475.  
  476. struct Point {
  477.     short                             v;
  478.     short                             h;
  479. };
  480. typedef struct Point                    Point;
  481. typedef Point *                            PointPtr;
  482.  
  483. struct Rect {
  484.     short                             top;
  485.     short                             left;
  486.     short                             bottom;
  487.     short                             right;
  488. };
  489. typedef struct Rect                        Rect;
  490. typedef Rect *                            RectPtr;
  491.  
  492. typedef short                             CharParameter;
  493.  
  494. enum {
  495.     normal                        = 0,
  496.     bold                        = 1,
  497.     italic                        = 2,
  498.     underline                    = 4,
  499.     outline                        = 8,
  500.     shadow                        = 0x10,
  501.     condense                    = 0x20,
  502.     extend                        = 0x40
  503. };
  504.  
  505. typedef unsigned char                     Style;
  506. typedef short                             StyleParameter;
  507. typedef Style                             StyleField;
  508.  
  509.  
  510. /********************************************************************************
  511.  
  512.     THINK C base objects
  513.  
  514.         HandleObject        Root class for handle based THINK C++ objects
  515.         PascalObject        Root class for pascal style objects in THINK C++ 
  516.  
  517. *********************************************************************************/
  518. #if defined(__SC__) && !defined(__STDC__) && defined(__cplusplus)
  519.     class __machdl HandleObject {};
  520.     #if TARGET_CPU_68K
  521.         class __pasobj PascalObject {};
  522.     #endif
  523. #endif
  524.  
  525.  
  526. /********************************************************************************
  527.  
  528.     MacOS versioning structures
  529.     
  530.         VersRec                    Contents of a 'vers' resource
  531.         VersRecPtr                Pointer to a VersRecPtr
  532.         VersRecHndl                Resource Handle containing a VersRec
  533.         NumVersion                Packed BCD version representation (e.g. "4.2.1a3" is 0x04214003)
  534.         UniversalProcPtr        Pointer to classic 68K code or a RoutineDescriptor
  535.         
  536.         ProcHandle                Pointer to a ProcPtr
  537.         UniversalProcHandle        Pointer to a UniversalProcPtr
  538.         
  539. *********************************************************************************/
  540. #if TARGET_RT_BIG_ENDIAN
  541.  
  542. struct NumVersion {
  543.                                                                 /* Numeric version part of 'vers' resource */
  544.     UInt8                             majorRev;                    /*1st part of version number in BCD*/
  545.     UInt8                             minorAndBugRev;                /*2nd & 3rd part of version number share a byte*/
  546.     UInt8                             stage;                        /*stage code: dev, alpha, beta, final*/
  547.     UInt8                             nonRelRev;                    /*revision level of non-released version*/
  548. };
  549. typedef struct NumVersion                NumVersion;
  550. #else
  551.  
  552. struct NumVersion {
  553.                                                                 /* Numeric version part of 'vers' resource accessable in little endian format */
  554.     UInt8                             nonRelRev;                    /*revision level of non-released version*/
  555.     UInt8                             stage;                        /*stage code: dev, alpha, beta, final*/
  556.     UInt8                             minorAndBugRev;                /*2nd & 3rd part of version number share a byte*/
  557.     UInt8                             majorRev;                    /*1st part of version number in BCD*/
  558. };
  559. typedef struct NumVersion                NumVersion;
  560. #endif  /* TARGET_RT_BIG_ENDIAN */
  561.  
  562.  
  563. enum {
  564.                                                                 /* Version Release Stage Codes */
  565.     developStage                = 0x20,
  566.     alphaStage                    = 0x40,
  567.     betaStage                    = 0x60,
  568.     finalStage                    = 0x80
  569. };
  570.  
  571.  
  572. union NumVersionVariant {
  573.                                                                 /* NumVersionVariant is a wrapper so NumVersion can be accessed as a 32-bit value */
  574.     NumVersion                         parts;
  575.     unsigned long                     whole;
  576. };
  577. typedef union NumVersionVariant            NumVersionVariant;
  578.  
  579. struct VersRec {
  580.                                                                 /* 'vers' resource format */
  581.     NumVersion                         numericVersion;                /*encoded version number*/
  582.     short                             countryCode;                /*country code from intl utilities*/
  583.     Str255                             shortVersion;                /*version number string - worst case*/
  584.     Str255                             reserved;                    /*longMessage string packed after shortVersion*/
  585. };
  586. typedef struct VersRec                    VersRec;
  587. typedef VersRec *                        VersRecPtr;
  588. typedef VersRecPtr *                    VersRecHndl;
  589. /*********************************************************************************
  590.  
  591.     Old names for types
  592.         
  593. *********************************************************************************/
  594.  
  595. typedef UInt8                             Byte;
  596. typedef SInt8                             SignedByte;
  597. typedef wide *                            WidePtr;
  598. typedef UnsignedWide *                    UnsignedWidePtr;
  599. typedef Float80                         extended80;
  600. typedef Float96                         extended96;
  601. typedef SInt8                             VHSelect;
  602.  
  603. /*********************************************************************************
  604.  
  605.     Debugger functions:
  606.     
  607.     Name            MacsBug            Macintosh Debugger                    Copland Debugger
  608.     ----------        -----------        -----------------------------        -------------------
  609.     Debugger        yes                InterfaceLib maps to DebugStr        yes
  610.     DebugStr        yes                yes                                    yes
  611.     Debugger68k        yes                InterfaceLib maps to DebugStr        obsolete?
  612.     DebugStr68k        yes                InterfaceLib maps to DebugStr        obsolete?
  613.     debugstr        yes                InterfaceLib maps to DebugStr        yes
  614.     SysBreak        no                InterfaceLib maps to SysError        obsolete?
  615.     SysBreakStr        no                InterfaceLib maps to SysError        obsolete?
  616.     SysBreakFunc    no                InterfaceLib maps to SysError        obsolete?
  617.     SysDebug        ?                ?                                    ?
  618.     SysDebugStr        ?                ?                                    ?
  619.     LLDebugger        no                yes                                    Low Level Nub
  620.     LLDebugStr        no                yes                                    Low Level Nub
  621.     
  622. *********************************************************************************/
  623.  
  624. EXTERN_API( void )
  625. Debugger                        (void)                                                        ONEWORDINLINE(0xA9FF);
  626.  
  627. EXTERN_API( void )
  628. DebugStr                        (ConstStr255Param         debuggerMsg)                        ONEWORDINLINE(0xABFF);
  629.  
  630. #if TARGET_OS_MAC
  631. #if CGLUESUPPORTED
  632. EXTERN_API_C( void )
  633. debugstr                        (const char *            debuggerMsg);
  634.  
  635. #endif  /* CGLUESUPPORTED */
  636.  
  637. /* Low level Copland debugger */
  638. EXTERN_API( void )
  639. LLDebugger                        (void);
  640.  
  641. EXTERN_API( void )
  642. LLDebugStr                        (ConstStr255Param         debuggerMsg);
  643.  
  644. #if TARGET_CPU_PPC
  645. /* Only for System 7 native drivers */
  646. EXTERN_API_C( void )
  647. SysDebug                        (void);
  648.  
  649. EXTERN_API_C( void )
  650. SysDebugStr                        (ConstStr255Param         str);
  651.  
  652. #endif  /* TARGET_CPU_PPC */
  653.  
  654. /* SADE break points */
  655. EXTERN_API( void )
  656. SysBreak                        (void)                                                        THREEWORDINLINE(0x303C, 0xFE16, 0xA9C9);
  657.  
  658. EXTERN_API( void )
  659. SysBreakStr                        (ConstStr255Param         debuggerMsg)                        THREEWORDINLINE(0x303C, 0xFE15, 0xA9C9);
  660.  
  661. EXTERN_API( void )
  662. SysBreakFunc                    (ConstStr255Param         debuggerMsg)                        THREEWORDINLINE(0x303C, 0xFE14, 0xA9C9);
  663.  
  664. /* old names for Debugger and DebugStr */
  665. #if OLDROUTINENAMES && TARGET_CPU_68K
  666.     #define Debugger68k()    Debugger()
  667.     #define DebugStr68k(s)    DebugStr(s)
  668. #endif
  669. #endif  /* TARGET_OS_MAC */
  670.  
  671.  
  672.  
  673. #if PRAGMA_STRUCT_ALIGN
  674.     #pragma options align=reset
  675. #elif PRAGMA_STRUCT_PACKPUSH
  676.     #pragma pack(pop)
  677. #elif PRAGMA_STRUCT_PACK
  678.     #pragma pack()
  679. #endif
  680.  
  681. #ifdef PRAGMA_IMPORT_OFF
  682. #pragma import off
  683. #elif PRAGMA_IMPORT
  684. #pragma import reset
  685. #endif
  686.  
  687. #ifdef __cplusplus
  688. }
  689. #endif
  690.  
  691. #endif /* __MACTYPES__ */
  692.  
  693.